package com.demo.cms.action.user;

import java.util.ArrayList;
import java.util.List;

import org.apache.commons.lang3.StringUtils;

import com.demo.Constants;
import com.demo.cms.model.Article;
import com.demo.core.model.Template;
import com.demo.webapp.action.TemplateProvider;

/**
 * 文章Action
 * 前端页面展示的Acttion
 * <br>根据文章ID+文章内容页数index得到一篇文章
 * @author ryuu.kk
 *
 */
public class ArticleAction extends ClientBaseAction implements TemplateProvider {

	/**
	 * 版本序列化ID
	 */
	private static final long serialVersionUID = 5457908809351588642L;

	/**
	 * 文章模型
	 */
	private Article article;
	
	/**
	 * 文章标签
	 */
	private List<String> tags;
	
	/**
	 * 模板模型
	 */
	private Template template;
	
	@Override
	public String execute() {
		
		// 请求的前期处理
		super.prepare();

		int currentPage = getCurrentPage();
		// 获得指定页的文章
		article = getArticleService().query(getId(), currentPage);
		
		if (article == null) {
			addActionError(getText("未找到文章."));
			return INPUT;
		}
		// ~~ 设置分页参数
		setTotalPage(article.getPageCount());
		// 设置栏目ID
		setCategoryId(article.getCategoryId());
		// 取得标签Tag
		String strTag = article.getTags();
		if (!StringUtils.isEmpty(strTag)) {
			tags = new ArrayList<String>();
			String[] args = strTag.split(",");
			for (String t : args) {
				tags.add(t);
			}
		}
		//this.categoryPath = article.getCategoryId();
		// 取得渲染模板
		template = findTemplate(article.getTemplateId());
		
		return SUCCESS;
	}
	
	// ~~ setter here ============================
	public String getActionType() {
		return Constants.ACTION_TYPE_ARTICLE;
	}
	
	public List<String> getTags() {
		return tags;
	}

	public Article getArticle() {
		return article;
	}

	@Override
	public Template getTemplateModel() {
		return this.template;
	}
}
